// 声明包名，该包为 com.zhunaer.dao，通常用于存放数据访问对象（DAO）相关的类和接口
package com.zhunaer.dao;

// 导入 com.zhunaer.entity 包下的 Shop 类，该类可能代表店铺实体
import com.zhunaer.entity.Shop;
// 导入 java.util 包下的 List 接口，用于表示元素列表
import java.util.List;

/**
 * 这是一个 ShopDao 接口，定义了对 Shop 实体进行数据操作的方法
 */
public interface ShopDao {

    /**
     * 向数据库中插入一条 Shop 记录
     * @param shop 要插入的 Shop 对象
     * @return 插入成功返回 1，失败返回 0
     */
    int insert(Shop shop);

    /**
     * 更新数据库中已有的 Shop 记录
     * @param shop 包含更新信息的 Shop 对象
     * @return 更新成功返回 1，失败返回 0
     */
    int update(Shop shop);

    /**
     * 根据用户 ID 查询相关的 Shop 列表
     * @param userId 用户的 ID
     * @return 符合条件的 Shop 对象列表
     */
    List<Shop> findByUserId(Integer userId);

    /**
     * 查询数据库中所有的 Shop 记录
     * @return 包含所有 Shop 对象的列表
     */
    List<Shop> findAll();

    /**
     * 根据店铺 ID 查询对应的 Shop 记录
     * @param shopId 店铺的 ID
     * @return 符合条件的 Shop 对象，如果未找到则返回 null
     */
    Shop findById(Integer shopId);

    /**
     * 根据关键词和状态条件查询 Shop 列表
     * @param keyword 用于搜索的关键词
     * @param status 店铺的状态
     * @return 符合条件的 Shop 对象列表
     */
    List<Shop> findByCondition(String keyword, String status);

    /**
     * 更新指定店铺的审核状态
     * @param shopId 店铺的 ID
     * @param auditStatus 要更新的审核状态
     * @return 更新成功返回 1，失败返回 0
     */
    int updateAuditStatus(Integer shopId, Integer auditStatus);

    /**
     * 更新指定店铺的营业状态
     * @param shopId 店铺的 ID
     * @param businessStatus 要更新的营业状态
     * @return 更新成功返回 1，失败返回 0
     */
    int updateBusinessStatus(Integer shopId, Integer businessStatus);
}